/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package estadosistema;

import java.util.ArrayList;


/**
 *
 * @author kastillo
 */
public class ManagerMensajes {


private ArrayList<Mensajes> enviados = new ArrayList<Mensajes>();
private ArrayList<Mensajes> recibidos = new ArrayList<Mensajes>();
private ArrayList<Nodos> nodos = new ArrayList<Nodos>();
private String nodoLocal;

    public ManagerMensajes(String nombrePeer) {
       this.nodoLocal=nombrePeer;
    }

    public String getNodoLocal() {
        return nodoLocal;
    }

    public void setNodoLocal(String nodoLocal) {
        this.nodoLocal = nodoLocal;
    }

public ManagerMensajes(ArrayList<Nodos> nodos,String nodoLocal)
    {
        this.nodos=nodos;
        this.nodoLocal=nodoLocal;
    }

    public ManagerMensajes() {
       super();
    }



 public void guardarMensajeEnviado(int secuencia, String destino, String msg,String color)
    {   
        Mensajes mensaje = new Mensajes();
        mensaje.setId(secuencia);
        mensaje.setOrigen(getNodoLocal());
        mensaje.setDestino(destino);
        mensaje.setMensaje(msg);
        mensaje.setColor(color);

        agregarEnviados(mensaje);
    }
 public void guardarMensajeRecibido(int secuencia, String origen, String msg,String color)
    {
        Mensajes mensaje = new Mensajes();
        mensaje.setId(secuencia);
        mensaje.setOrigen(origen);
        mensaje.setDestino(getNodoLocal());
        mensaje.setMensaje(msg);
        mensaje.setColor(color);

               
        agregarRecibidos(mensaje);

    }

    /**
     * @return the enviados
     */
    public ArrayList<Mensajes> getEnviados() {
        return enviados;
    }

    /**
     * @param enviados the enviados to set
     */
    public void setEnviados(ArrayList<Mensajes> enviados) {
        this.enviados = enviados;
    }

    /**
     * @return the recibidos
     */
    public ArrayList<Mensajes> getRecibidos() {
        return recibidos;
    }

    /**
     * @param recibidos the recibidos to set
     */
    public void setRecibidos(ArrayList<Mensajes> recibidos) {
        this.recibidos = recibidos;
    }

    /**
     * @return the nodos
     */
    public ArrayList<Nodos> getNodos() {
        return nodos;
    }
    public void actualizarSecuenciaNodo(String nombreNodo)
      {
        for(int i=0;i<nodos.size();i++)
        {
            Nodos n = new Nodos();

            String nombre = n.getNombre();
             if(nombre.equals(nombreNodo)){
                int  secuencia = nodos.get(i).getSecuencia() +1 ;
                 nodos.get(i).setSecuencia(secuencia);
            }
        }
      }
   public int traerSecuenciaNodo(String nombreNodo)
      { int  secuencia=0;
        for(int i=0;i<nodos.size();i++)
        {
            Nodos n = new Nodos();

            String nombre = n.getNombre();
             if(nombre.equals(nombreNodo)){
                 secuencia = nodos.get(i).getSecuencia() ;
            }
        }
        return secuencia;
      }
    /**
     * @param nodos the nodos to set
     */
    public void setNodos(ArrayList<Nodos> nodos) {
        this.nodos = nodos;
    }

    private void agregarRecibidos(Mensajes mensaje) {

        String registroTentativo = mensaje.getId()+mensaje.getOrigen()+mensaje.getDestino()+mensaje.getMensaje() +mensaje.getColor();


        boolean existeMensaje = false;

        for(Mensajes m : recibidos)
            {
               String  actual = m.getId()+m.getOrigen()+m.getDestino()+m.getMensaje() +m.getColor();

                if(registroTentativo.equals(actual))
                {
                    existeMensaje = true;
                    break;
                }
            }
       if(!existeMensaje)
       {
          recibidos.add(mensaje);
       }


    }
    private void agregarEnviados(Mensajes mensaje) {

        String registroTentativo = mensaje.getId()+mensaje.getOrigen()+mensaje.getDestino()+mensaje.getMensaje() +mensaje.getColor();


        boolean existeMensaje = false;

        for(Mensajes m : enviados)
            {
               String  actual = m.getId()+m.getOrigen()+m.getDestino()+m.getMensaje() +m.getColor();

                if(registroTentativo.equals(actual))
                {
                    existeMensaje = true;
                    break;
                }
            }
       if(!existeMensaje)
       {
          enviados.add(mensaje);
       }


    }

}
